#ifndef UTILS_H
#define UTILS_H
#include <QObject>
#include <QList>
#include <QRegExp>


#include <QPushButton>

/********** 全局函数 区   此文件为工具类的函数***********/

//quint16转QList<bool>用 ,低位低下标 高位高下标
QList<bool> quint16ToBoolList(quint16 value);

QList<bool> quint8ListToBoolList(QList<quint8> values);
QList<quint16> quint8ListToQuint16List(QList<quint8> values);

QString calculateMD5(const QString &input);

quint16 calculateCRC(const QByteArray &data);

QString printQuint16AsBytes(quint16 value);

QString getHardDiskSerialNumber() ;//获取硬盘的序列号

quint16 swapBytes(quint16 value) ;


quint16     boolListToQuint16(QList<bool> values);

//两个quint16互换位置，加内存拷贝转float
float  quint16ToFloat(quint16  value1,quint16 value2);

quint32 quint16ToQuint32(quint16  value1,quint16 value2);

//两个quint16互换位置，加内存拷贝转float
QList<quint16> floatToQuint16(float value);

//quint32反转位置后转为QList<quint16>
QList<quint16>  quint32toQuint16List(quint32 value);

//反转其中的BoolList
QList<bool> invertBoolList(const QList<bool>& boolList);

//quint16修改其中的一个比特位的数据
quint16 quint16ModifyBit(quint16 data, int bitIndex, bool bitValue);

QString ByteArraytoQString16bitShow(QByteArray data);



//设置所有的子控件下面的组件是否禁用
void setEnableAllChildWidgets(QWidget* parent,bool isEnable);

//根据名字查找按钮
QList<QPushButton*> findButtonsWithSpecificName(QWidget *parent, const QString &pattern);

//找出一个下面的所有子控件
QList<QPushButton*> findAllQPushButton(QWidget *parent);


//比较两个QList<bool>
QMap<int, bool> compareQListBool(const QList<bool>& list1, const QList<bool>& list2);

QString replaceFontSize(const QString &inputString, int increment);

class Utils
{
public:
    Utils();
};

#endif // UTILS_H
